
#include <linux/module.h>		
#include <linux/init.h>		
                           
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/string.h>
#include <linux/bcd.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/semaphore.h>
#include <linux/miscdevice.h>
#include <linux/io.h>
#include <linux/uaccess.h>
#include <linux/delay.h>


struct i2c_adapter* i2c_ada;
static struct i2c_client *atsh204a_client;
/***
 * 12.使用C文件编写i2c_client代码
 * 
首先要把设备树配置项去掉
insmod  ft5x06_driver.ko
insmod ft5x06_client.ko 
cat /sys/bus/platform/devices/fe5a0000.i2c/i2c-1/1-0038/name    my_ft5x06     //表示安装成功
匹配上了，
串口输出,this is  my_ft5x06_probe
*/



//   *  i2c_board_info 用于描述i2c硬件资源，就是设备树配置的那些东西
//  struct i2c_board_info {
// 	char		type[I2C_NAME_SIZE];         //芯片类型,用来初始化   i2c_client.name 
// 	unsigned short	flags;                   // 用来初始化 i2c_client.name, 表示设别的属性和配置
// 	unsigned short	addr;                    // 存储 i2c_client.addr  i2c器件地址
// 	const char	*dev_name;                   // 设备名字 
// 	void		*platform_data;               //  存储在  i2c_client.dev.platform_data中的平台相关数据
// 	struct device_node *of_node;              // 设备节点
// 	struct fwnode_handle *fwnode;             // 平台固定提供的节点
// 	const struct property_entry *properties;   // 设备的其他属性
// 	const struct resource *resources;          // 设备的相关资源  
// 	unsigned int	num_resources;             // 设备的数量 
// 	int		irq;                               // 中断
// };

//使用宏I2C_BOARD_INFO 初始化上面结构体

static struct i2c_board_info hi_info[] = {
	     {I2C_BOARD_INFO("my-ft5x06", 0x38)},
         {}
};

static int ft5x06_client_init(void)
{

    //参数i2c控制器编号，挂载i2c1上 , i2c控制器 
	//参数，就是i2c0,i2c1 后面的编号
   i2c_ada = i2c_get_adapter(1); 
   //i2c_board_info  描述i2c使用的硬件资源  ， plateform_register_device
   // 初始化一个i2c外设
   atsh204a_client = i2c_new_device(i2c_ada, hi_info);
   //引用技术+1
   i2c_put_adapter(i2c_ada);
   return 0; 
};



static void ft5x06_client_exit(void)
{
  

};

//late_initcall(goodix_ts_init);
module_init(ft5x06_client_init);

module_exit(ft5x06_client_exit);

MODULE_DESCRIPTION("GTP Series Driver");
MODULE_LICENSE("GPL");
